﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Data;

namespace ServicioSocial.Clases
{
    class Usuario
    {
        #region Propiedades
        private int claveEntidad;
        private string nombre;
        private string apellidoPaterno;
        private string apellidoMaterno;
        private string direccion;
        private string telefono;
        private string correo;
        private string usuarioLogearte;
        private string contrasena;
        #endregion

        #region GetersYSeters
        public int ClaveEntidad
        {
            get
            {
                return claveEntidad;
            }
            set 
            {
                claveEntidad = value;
            }
        }

        public string Nombre
        {
            get
            {
                return nombre;
            }
            set
            {
                nombre = value;
            }
        }

        public string ApellidoMaterno
        {
            get 
            {
                return apellidoMaterno;
            }
            set
            {
                apellidoMaterno = value;
            }
        }

        public string ApellidoPaterno
        {
            get
            {
                return apellidoPaterno;
            }
            set
            {
                apellidoPaterno = value;
            }
        }

        public string Direccion 
        {
            get 
            {
                return direccion;
            }
            set 
            {
                direccion = value;
            }
        }

        public string Telefono 
        {
            get 
            {
                return telefono;
            }
            set 
            {
                telefono = value;
            }
        }

        public string Correo 
        {
            get 
            {
                return correo;
            }
            set 
            {
                correo = value;
            }
        }

        public string UsuarioLogearte
        {
            get
            {
                return usuarioLogearte;
            }
            set
            {
                usuarioLogearte = value;
            }
        }

        public string Contrasena
        {
            get
            {
                return contrasena;
            }
            set
            {
                contrasena = value;
            }
        }
        #endregion

        #region Metodos
        /// <summary>
        /// Metodo que verifica el login dado por el usuario
        /// </summary>
        /// <param name="MiUsuario"></param>
        /// <returns></returns>
        public static bool VerificaLogin(Usuario MiUsuario)
        {
            bool Validacion = false;
            MySqlConnection ConexionMySql = new MySqlConnection();
            CadenaConexion miCadena = new CadenaConexion();
            ConexionMySql.ConnectionString = miCadena.AsignaCadenaConexion();
            MySqlDataAdapter daProfesor = new MySqlDataAdapter("select * from " +
                "Usuario where usuario='" + MiUsuario.usuarioLogearte + "' and " +
                "contrasena= MD5('" + MiUsuario.contrasena + "');", ConexionMySql);
            DataTable dtProfesor = new DataTable();
            daProfesor.Fill(dtProfesor);
            if (dtProfesor.Rows.Count > 0)
            {
                Validacion = true;
            }
            return Validacion;
        }

        /// <summary>
        /// Metodo que obtiene la claveEntidad del usuario dado su usuario y pass
        /// </summary>
        /// <param name="MiUsuario"></param>
        /// <returns></returns>
        public static int buscaLaCveEntUsuario(Usuario MiUsuario)
        {
            int Validacion = 0;
            MySqlConnection ConexionMySql = new MySqlConnection();
            CadenaConexion miCadena = new CadenaConexion();
            ConexionMySql.ConnectionString = miCadena.AsignaCadenaConexion();
            MySqlDataAdapter daProfesor = new MySqlDataAdapter("select * from " +
                "Usuario where usuario='" + MiUsuario.usuarioLogearte + "' and " +
                "contrasena= MD5('" + MiUsuario.contrasena + "');", ConexionMySql);
            DataTable dtProfesor = new DataTable();
            daProfesor.Fill(dtProfesor);
            if (dtProfesor.Rows.Count > 0)
            {
                Validacion = Convert.ToInt32(dtProfesor.Rows[0].ItemArray[0]);
            }
            return Validacion;
        }

        /// <summary>
        /// Metodo que busca el objeto usuario por su claveEntidad
        /// </summary>
        /// <param name="CveEntUsuario"></param>
        /// <returns></returns>
        public static Usuario buscaPorCveEntUsuario(int CveEntUsuario)
        {
            Usuario miUsuario = new Usuario();
            MySqlConnection ConexionMySql = new MySqlConnection();
            CadenaConexion miCadena = new CadenaConexion();
            ConexionMySql.ConnectionString = miCadena.AsignaCadenaConexion();
            MySqlDataAdapter daProfesor = new MySqlDataAdapter("select * from " +
                "Usuario where ClaveEntidad='" + CveEntUsuario + "'", ConexionMySql);
            DataTable dtUsuario = new DataTable();
            daProfesor.Fill(dtUsuario);
            miUsuario.claveEntidad = Convert.ToInt32(dtUsuario.Rows[0].ItemArray[0]);
            miUsuario.nombre = dtUsuario.Rows[0].ItemArray[1].ToString();
            miUsuario.apellidoPaterno = dtUsuario.Rows[0].ItemArray[2].ToString();
            miUsuario.apellidoMaterno = dtUsuario.Rows[0].ItemArray[3].ToString();
            return miUsuario;
        }

        /// <summary>
        /// Metodo que busca Todos los usuarios profesor
        /// </summary>
        /// <returns></returns>
        public static DataTable buscarTodosProfesores()
        {
           
            MySqlConnection ConexionMySql = new MySqlConnection();
            CadenaConexion miCadena = new CadenaConexion();
            ConexionMySql.ConnectionString = miCadena.AsignaCadenaConexion();
            MySqlDataAdapter daProfesor = new MySqlDataAdapter("select ClaveEntidad, Nombre, " +
                "ApellidoPaterno, ApellidoMaterno, Direccion, Telefono, Correo from Usuario;", ConexionMySql);
            DataTable dtProfesor = new DataTable();
            daProfesor.Fill(dtProfesor);
            return dtProfesor; 
        }

        /// <summary>
        /// Metodo que obtiene datatable del usuario dada su claveEntidad
        /// </summary>
        /// <param name="CveEntUsuario"></param>
        /// <returns></returns>
        public static DataTable dtBuscarPorCveEntUsuario(int CveEntUsuario)
        {
            MySqlConnection ConexionMySql = new MySqlConnection();
            CadenaConexion miCadena = new CadenaConexion();
            ConexionMySql.ConnectionString = miCadena.AsignaCadenaConexion();
            MySqlDataAdapter daProfesor = new MySqlDataAdapter("select ClaveEntidad, Nombre, " +
                "ApellidoPaterno, ApellidoMaterno, Direccion, Telefono, Correo from Usuario " + 
                "where ClaveEntidad = " + CveEntUsuario +";", ConexionMySql);
            DataTable dtProfesor = new DataTable();
            daProfesor.Fill(dtProfesor);
            return dtProfesor; 
        }

        /// <summary>
        /// metodo que actualiza el registro de un usuario dada su claveEntidad
        /// </summary>
        /// <param name="CveEntUsuaio"></param>
        /// <returns></returns>
        public static bool actualizaUsuario(Usuario miUsuario)
        {
            bool Actualizo = false;
            MySqlConnection ConexionMySql = new MySqlConnection();
            CadenaConexion miCadena = new CadenaConexion();
            ConexionMySql.ConnectionString = miCadena.AsignaCadenaConexion();
            string Actualiza = "update usuario set Nombre='" + miUsuario.nombre + "', " +
                                "ApellidoPaterno = '" + miUsuario.apellidoPaterno + "', " +
                                "ApellidoMaterno = '" + miUsuario.apellidoMaterno + "', " +
                                "Direccion = '" + miUsuario.direccion + "', " +
                                "Telefono = '" + miUsuario.telefono + "', " +
                                "Correo = '" + miUsuario.correo + "' where ClaveEntidad = " + miUsuario.claveEntidad + ";";
            ConexionMySql.Open();
            try
            {
                MySqlCommand comando = new MySqlCommand(Actualiza, ConexionMySql);
                comando.ExecuteNonQuery();
                Actualizo = true;
                return Actualizo;
            }
            catch
            {
                return Actualizo;            
            }

        }

        public static bool insertaNuevoProfesor(Usuario miUsuario)
        {
            bool inserta = false;
            MySqlConnection ConexionMySql = new MySqlConnection();
            CadenaConexion miCadena = new CadenaConexion();
            ConexionMySql.ConnectionString = miCadena.AsignaCadenaConexion();
            string Insert = "insert into usuario(Nombre, ApellidoPaterno, ApellidoMaterno, " +
                            "Usuario, Contrasena, Direccion, Telefono, Correo, TipoUsuario) " +
                            "values('" + miUsuario.nombre + "', '" + miUsuario.apellidoPaterno + "', " +
                            "'" + miUsuario.apellidoMaterno + "', '" + miUsuario.usuarioLogearte + "', " +
                            "MD5('" + miUsuario.contrasena + "'), '" + miUsuario.direccion + "', " +
                            "'" + miUsuario.correo + "', '" + miUsuario.telefono + "', 1);";
            ConexionMySql.Open();
            try
            {
                MySqlCommand comando = new MySqlCommand(Insert, ConexionMySql);
                comando.ExecuteNonQuery();
                inserta = true;
                return inserta;
            }
            catch
            {
                return inserta;
            }
        }

        /// <summary>
        /// metodo que verifica si ya existe un Profesor con el mismo nombre de usuario
        /// </summary>
        /// <param name="nombreUsuario"></param>
        /// <returns></returns>
        public static bool verificaExisteMismoNombreUsuarioProfesor(string nombreUsuario)
        {
            bool existe = false;
            MySqlConnection ConexionMySql = new MySqlConnection();
            CadenaConexion miCadena = new CadenaConexion();
            ConexionMySql.ConnectionString = miCadena.AsignaCadenaConexion();
            MySqlDataAdapter daProfesor = new MySqlDataAdapter("select * from Usuario where usuario= '" + nombreUsuario + "';", ConexionMySql);
            DataTable dtProfesor = new DataTable();
            daProfesor.Fill(dtProfesor);
            if (dtProfesor.Rows.Count > 0)
            {
                existe = true;
            }
            return existe; 
        }


        #endregion
    }
}
